扩展 如何配置 Jenkins 工作节点(安装 JDK 环境并切换)
为什么需要工作节点
当构建任务越来越多时,Jenkins Master 节点的资源(CPU、内存)会成为瓶颈。此时需要添加工作节点(Agent/Worker)来分担构建压力。
| 场景 | Master 单节点 | Master + Agent 多节点 |
|---|---|---|
| 构建任务少 | 满足需求 | 无需扩展 |
| 构建任务多 | 资源紧张,排队严重 | 分散压力,并行构建 |
| 多架构需求 | 不支持 | 不同架构的 Agent 节点 |
| 多环境需求 | 混用风险高 | 按标签隔离环境 |
安装 SSH Build Agents 插件
插件安装
- 进入 Manage Jenkins → Plugins → Available plugins
- 搜索 SSH Build Agents(或搜索
agent) - 安装以下插件:
- SSH Build Agents Plugin — 通过 SSH 连接远程工作节点
- 可选:Agent Status Plugin — 查看节点状态
- 安装完成后重启 Jenkins
创建工作节点
添加节点
- 进入 Manage Jenkins → Nodes
- 点击 New Node
- 输入节点名称(如
dev) - 选择 Permanent Agent(固定节点)
- 点击 Create
节点核心配置
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 执行器数量(Executors) | 2 或 4 | 并行任务数,建议与 CPU 核数相同 |
| 远程工作目录 | /home | 节点上的工作空间目录 |
| 标签(Labels) | dev 或 prd | 用于任务绑定到特定节点 |
| 用法(Usage) | 只允许运行绑定到此节点的 Job | 推荐选择此项 |
用法选项说明
| 选项 | 行为 |
|---|---|
| 尽可能使用此节点 | Jenkins 默认使用该节点运行任务 |
| 只允许运行绑定到此节点的 Job | 只有设置了对应标签的任务才会在该节点运行 |
推荐选择第二个选项,通过标签精确控制任务调度。
SSH 启动方式配置
- 启动方式选择 Launch agents via SSH
- 配置连接参数:
| 参数 | 示例值 | 说明 |
|---|---|---|
| Host | 192.168.31.199 | 节点 IP 地址 |
| Port | 22 | SSH 端口 |
| Credentials | 添加 SSH 凭证 | 用户名密码或密钥 |
| Host Key Verification Strategy | Manually trusted key | 首次连接需手动确认 |
- Credentials 添加方式:
- 点击 Add → Jenkins
- 选择 Username with password
- 输入用户名(如
root)和密码 - 添加描述(如
199测试机)
高级配置
| 参数 | 推荐值 | 说明 |
|---|---|---|
| Java 路径 | 自动检测或手动指定 | 节点上的 JDK 路径 |
| JVM Options | 保持默认 | Java 启动参数 |
| 连接超时 | 300 秒 | SSH 连接超时时间 |
| 最大重试次数 | 10 | 连接失败重试次数 |
| 重试间隔 | 5 秒 | 每次重试间隔 |
工作节点安装 JDK
工作节点上必须安装 JDK,且版本需与 Jenkins Master 的 JDK 版本一致。
查看 Jenkins 使用的 JDK 版本
# 方法一:进入 Jenkins 容器查看
docker exec -it jenkins-blueocean java -version
# 输出示例:openjdk version "11.0.x"
bash
CentOS / RHEL 安装 JDK
# 搜索可用的 JDK 版本
yum search java-1.8 | grep jdk
yum search java-11 | grep jdk
# 安装 JDK 11
yum install -y java-11-openjdk-devel
# 验证安装
java -version
bash
Ubuntu / Debian 安装 JDK
# 搜索可用的 JDK 版本
apt search jdk | grep 11
# 安装 OpenJDK 11
apt install -y openjdk-11-jdk
# 验证安装
java -version
bash
JDK 版本切换
当系统上安装了多个 JDK 版本时,需要切换到与 Jenkins 一致的版本。
使用 alternatives 切换(CentOS/RHEL/Ubuntu)
# 查看已安装的 Java 版本列表
sudo alternatives --config java
# 或 Ubuntu
sudo update-alternatives --config java
# 输出示例:
# There are 2 programs which provide 'java'.
#
# Selection Command
# -----------------------------------------------
# 1 /usr/lib/jvm/java-1.8.0-openjdk/bin/java
# * 2 /usr/lib/jvm/java-11-openjdk/bin/java
#
# Enter to keep the current selection[+], or type selection number: 2
# 验证切换结果
java -version
# openjdk version "11.0.x" ...
bash
版本对照参考
| Jenkins 版本 | 最低 JDK 要求 | 推荐 JDK |
|---|---|---|
| 2.400+ | JDK 11 | JDK 11 或 17 |
| 2.350-2.399 | JDK 11 | JDK 11 |
| 旧版本 | JDK 8 | JDK 8 或 11 |
关键原则:工作节点的 JDK 版本必须与 Jenkins Master 版本对应,否则节点可能无法正常启动。
验证节点连接
配置完成并保存后:
- 在 Nodes 列表中查看节点状态
- 状态变化:
Launching→ 显示空闲执行器数量 - 执行器数量显示的就是配置的 Executors 值
Nodes 列表:
┌────────┬──────────┬──────────┐
│ Name │ Status │ Executors │
├────────┼──────────┼──────────┤
│ master │ 在线 │ 2 │
│ dev │ 在线 │ 2 │
└────────┴──────────┴──────────┘
text
任务绑定到工作节点
在任务配置中使用标签将任务绑定到特定节点:
- 进入任务 Configure
- 勾选 Restrict where this project can be run
- 输入标签表达式(如
dev) - 保存后任务将只在
dev标签的节点上运行
配置注意事项总结
| 要点 | 说明 |
|---|---|
| Executors 数量 | 不要设置过大,与 CPU 核数相同即可,避免并行任务导致卡顿 |
| 连接方式 | SSH 密钥方式更安全,密码方式更简单 |
| JDK 版本 | 节点 JDK 版本必须与 Jenkins Master 一致 |
| 查看 Master JDK | 通过 docker exec 进入容器执行 java -version |
| 防火墙 | 确保 SSH 端口在防火墙中已放行 |
| 工作目录 | 远程工作目录必须存在且可写 |
| 标签策略 | 使用标签(dev/prd)精确控制任务调度 |
↑